11.  objekt orientierte programmierung

11.4  umgang mit objekten

referenzieren
Beim erzeugen eines objekts erhält man in einer variablen eine referenz (zeiger) auf das objekt. Man kann diese variable kopieren, die kopie enthält dann keine kopie des objekts, sondern wiederum nur eine referenz auf das objekt. Gewonnen hat man eine zweite variable, mit der man auf das objekt zugreifen kann.

kopieren
Man kann keine eigene methode bauen, mit der man von einem objekt eine kopie mit einem anderen namen erzeugen kann. Aber es gibt einen notbehelf: man schreibt eine methode, mit der ein neues objekt erzeugt wird und überträgt dann die eigenschaften eines anderen objekts ganz oder teilweise auf das neue objekt. Die methode muss als static deklariert werden (vgl beispiel).

klon
Mit der standard-methode clone kann man tatsächlich eine völlig identische kopie, einen echten klon eines objekts erzeugen. Die methode hat den namen __clone wird aber einfach mit clone aufgerufen und die variable mit der referenz des zu klonenden objekts wird nicht als parameter übergeben (in runden klammern) sondern einfach hinter den aufruf geschrieben (sehr merkwürdig).

$neu = clone $alt;


$neuname einer variablen der eine referenz auf das geklonte objekt zugewiesen wird.
$altname einer variablen, die eine referenz auf ein vorhandenes objekt enthält

Wenn die klassen-definition die methode __clone enthält, wird beim klonen diese methode ausgeführt und man kann dabei an dem geklonten objekt noch änderungen vornehmen (vgl. beispiel). Wenn die methode nicht in der klassen-definition definiert ist, wird trotzdem geklont.

beispiel
Die definition der klasse Person enthält eine klassen-konstante und eine statische eigenschaft, die verwendet werden, wie bei 11.3.4. Auch die funktionen construct und aendern zeigen nichts neues. Der statischen methode kopieren werden als parameter eine variable mit einer referenz und zwei zeichenketten übergeben. Mit den zeichenketten wird ein neues objekt erzeugt, das dann zum teil eigenschaft des objekts erhält, auf die referenz verweist. Mit der standard-methode __clone wird ein objekt geklont, dann werden seine eigenschaften zum teil geändert, u.a. mit hilfe der statischen variablen $nr die identifikation. Zu beachten ist, dass die anzeige der objekte vollständig in die klassen-definition verlegt ist. Dazu wird der methode ausgabe die adresse eines feldes übergeben, in dem alle referenzen gespeichert sind. Die methode entnimmt der reihe nach die referenzen dem feld und ruft damit die methode anzeige auf. Natürlich hätte man die anweisungen der methode anzeige auch in die methode ausgabe stellen können, aber es soll hier ja ein wenig mit den möglichkeiten gespielt werden.

Bei der verarbeitung werden zunächst drei objekte erzeugt und ihre referenzen im feld $alle gespeichert. Bemerkenswert ist die indizierung mit hilfe der statischen variablen $alle[Person::$nr] die variable enthält nach dem erzeugen eines objekts die laufende nummer des objekts. Mit der methode ändern werden an den eigenschaften der objekte änderungen vorgenommen. Schließlich wird mit der methode kopieren das objekt $fall2 in das neue objekt $fall4 kopiert und dort etwas abgeändert. Zuletzt wird das objekt $fall3 als $fall5 geklont.

objekte original

im FC Mau gibt es 3 mitglieder

nrnamevornameabteilungbeitrag
1001ValentinKarlFC Mau - 0.00
1002KarlstadtLieselFC Mau - 0.00
1003RembremerdengWrdlbrmftFC Mau - 0.00

objekte geändert

im FC Mau gibt es 3 mitglieder

nrnamevornameabteilungbeitrag
1001ValentinKarlFC Mau - 315.80
1002KarlstadtLieselFC Mau - 220.00
1003RembremerdengWrdlbrmftFC Mau - 110.50

objekte nach kopieren und klonen

im FC Mau gibt es 5 mitglieder

nrnamevornameabteilungbeitrag
1001ValentinKarlFC Mau - 315.80
1002KarlstadtLieselFC Mau - 220.00
1003RembremerdengWrdlbrmftFC Mau - 110.50
1004Karlstadt-QuatschElviraFC Mau - 220.00
1005Rembremerdeng-geklontWrdlbrmftFC Mau - 110.50

zum untermenü


    IMPRESSUM  

    KONTAKT  

    PRIVAT  

    D O K U  


  H T M L  
  C S S  
  p h p
  My S Q L  
  JAVASCRIPT